home *** CD-ROM | disk | FTP | other *** search
- unit MakeFileAssocU;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls;
-
- type
- TForm1 = class(TForm)
- Button1: TButton;
- procedure Button1Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.DFM}
-
- uses
- ComObj, ShlObj;
-
- procedure MakeAssoc(
- const FileExt, FileClass, Description, DefaultIcon: String;
- AlwaysShowExt, QuickView: Boolean);
- begin
- if (Length(FileExt) = 0) or (FileExt[1] <> '.') then
- raise Exception.Create('Invalid file extension');
- CreateRegKey(FileExt, '', FileClass);
- CreateRegKey(FileClass, '', Description);
- if DefaultIcon <> '' then
- CreateRegKey(FileClass + '\DefaultIcon', '', DefaultIcon);
- if AlwaysShowExt then
- CreateRegKey(FileClass, 'AlwaysShowExt', '');
- if QuickView then
- CreateRegKey(FileClass + '\QuickView', '', '*');
- SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
- end;
-
- procedure MakeAssocVerb(
- const FileExt, Verb, VerbCaption, VerbCommand: String;
- UseDDE: Boolean;
- const Service, Topic, Macro, MacroNotRunning: String);
- var
- FileClass: String;
- begin
- if (Length(FileExt) = 0) or (FileExt[1] <> '.') then
- raise Exception.Create('Invalid file extension');
- FileClass := GetRegStringValue(FileExt, '');
- if FileClass = '' then
- raise Exception.Create('File extension not registered');
- CreateRegKey(FileClass + '\shell\' + Verb, '', VerbCaption);
- CreateRegKey(FileClass + '\shell\' + Verb + '\command', '', VerbCommand);
- if UseDDE then
- begin
- CreateRegKey(FileClass + '\shell\' + Verb + '\ddeexec', '', Macro);
- CreateRegKey(FileClass + '\shell\' + Verb + '\ddeexec\Application', '', Service);
- CreateRegKey(FileClass + '\shell\' + Verb + '\ddeexec\Topic', '', Topic);
- if MacroNotRunning <> '' then
- CreateRegKey(FileClass + '\shell\' + Verb + '\ddeexec\ifexec', '', MacroNotRunning);
- end;
- SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
- end;
-
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- MakeAssoc('.DC', 'DC_File', 'Delphi Clinic File',
- 'D:\Temp\EXE Bin\FileAssoc.exe,0', True, True);
- MakeAssocVerb('.DC', 'open', '', '"D:\Temp\EXE Bin\FileAssoc.exe" %1',
- True, 'FileAssoc', 'System', '[open("%1")]', '');
- MakeAssocVerb('.DC', 'print', '', '"D:\Temp\EXE Bin\FileAssoc.exe" %1',
- True, 'FileAssoc', 'System',
- '[open("%1")][print()][close()]',
- '[open("%1")][print()][exit()]');
- end;
-
- end.
-